/*
    定义日志消息类，进行日志中间信息的存储
        m1. 日志的输出时间
        m2. 日志等级
        m3. 源文件名称
        m4. 源代码行号
        m5. 线程ID
        m6. 日志信息/日志描述
        m7. 日志器名称（当前支持多日志器的同时使用）
*/

#ifndef __M_MSG_H__
#define __M_MSG_H__
#include "util.hpp"
#include "level.hpp"
#include <thread>
#include <memory>

namespace log_sys{
struct LogMsg {
    using ptr = std::shared_ptr<LogMsg>;
    int _line;                       //行号
    time_t _ctime;                      //时间
    std::thread::id _tid;               //线程ID
    std::string _logger;                //日志器名称
    std::string _file;                  //文件名
    std::string _payload;               //日志消息
    log_sys::Log_level::Value _level;   //日志等级
    LogMsg(const std::string& name, const std::string& file, 
        int line, std::string &&payload, 
        log_sys::Log_level::Value level): 
        _logger(name), 
        _file(file),
        _payload(std::move(payload)),
        _level(level),
        _line(line), 
        _ctime(log_sys::util::Date::now()),
        _tid(std::this_thread::get_id())
        {
            //std::cout << "构造msg\n";
        }
    //~LogMsg() { /*std::cout << "析构msg\n";*/}
    };
}

#endif
